//Element.h
#ifndef __ELEMENT_H__
#define __ELEMENT_H__

class Visitor;
class Element
{
public:
    virtual ~Element() = default;
    virtual void Accept(Visitor* vis) = 0;
protected:
    Element() = default;
private:
};

class ConcreteElementA:public Element
{
public:
    ConcreteElementA() = default;
    ~ConcreteElementA() = default;

    void Accept(Visitor* vis);
protected:
private:
};

class ConcreteElementB:public Element
{
public:
    ConcreteElementB() = default;
    ~ConcreteElementB() = default;

    void Accept(Visitor* vis);
protected:
private:
};

#endif //~__ELEMENT_H__

